容器化 (Docker) 教程
1. 什么是 Docker?
Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中。这些容器可以在任何支持 Docker 的环境中运行,确保应用程序在不同环境中的一致性。
1.1 Docker 的优势
- 一致性:容器化确保应用程序在开发、测试和生产环境中运行一致。
- 轻量级:容器共享主机系统的内核,占用资源少,启动速度快。
- 可移植性:容器可以在任何支持 Docker 的环境中运行,无需担心环境差异。
- 隔离性:每个容器都是独立的,互不干扰。
2. Docker 的基本概念
2.1 镜像 (Image)
Docker 镜像是一个轻量级、独立的可执行软件包,包含运行应用程序所需的一切:代码、运行时、库、环境变量和配置文件。
2.2 容器 (Container)
容器是镜像的运行实例。你可以创建、启动、停止、移动或删除一个容器。容器是隔离的,每个容器都有自己的文件系统、网络和进程空间。
2.3 Dockerfile
Dockerfile 是一个文本文件,包含一系列指令,用于构建 Docker 镜像。每个指令都会在镜像中创建一个新的层。
2.4 Docker 仓库 (Registry)
Docker 仓库是存储和分发 Docker 镜像的地方。最常用的公共仓库是 Docker Hub。
3. 安装 Docker
3.1 在 Linux 上安装 Docker
# 更新包管理器
sudo apt-get update
# 安装 Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 启动 Docker 服务
sudo systemctl start docker
# 设置 Docker 开机自启
sudo systemctl enable docker
3.2 在 macOS 上安装 Docker
下载并安装 Docker Desktop for Mac 应用程序。
3.3 在 Windows 上安装 Docker
下载并安装 Docker Desktop for Windows 应用程序。
4. 创建第一个 Docker 容器
4.1 拉取镜像
docker pull hello-world
4.2 运行容器
docker run hello-world
4.3 查看容器
docker ps -a
5. 使用 Dockerfile 构建镜像
5.1 创建 Dockerfile
# 使用官方 Node.js 镜像作为基础
FROM node:14
# 设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 3000
# 启动应用
CMD ["npm", "start"]
5.2 构建镜像
docker build -t my-express-app .
5.3 运行容器
docker run -p 3000:3000 my-express-app
6. 实践练习
6.1 创建一个简单的 Express.js 应用
mkdir my-express-app
cd my-express-app
npm init -y
npm install express
创建 index.js 文件:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
6.2 创建 Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
6.3 构建并运行容器
docker build -t my-express-app .
docker run -p 3000:3000 my-express-app
访问 http://localhost:3000,你应该会看到 "Hello World!"。
7. 总结
通过本教程,你已经学会了 Docker 的基本概念、安装方法以及如何使用 Dockerfile 构建和运行容器。Docker 是一个强大的工具,能够帮助你简化应用程序的部署和管理。继续探索 Docker 的更多功能,如 Docker Compose、Docker Swarm 和 Kubernetes,以进一步提升你的容器化技能。
8. 进一步学习资源
希望这篇教程能帮助你顺利入门 Docker,并在实际项目中应用容器化技术!